--[[
描述 ： 表格控件
作者 ： gdy
时间 ： 15/06/4
]]
UITableView = Class(MLView,'UITabBarView');
UITableView.ALIGN_LEFT    =  0;  -- 左对齐
UITableView.ALIGN_CENTER  =  1;  -- 中对齐
UITableView.ALIGN_RIGHT   =  2;  -- 右对齐

UITableView.mRowHeight =   nil;     -- 宽度
UITableView.mHeight =  nil;     -- 高度
UITableView.mPaddWidth = nil;
UITableView.mText   =  nil;     -- 显示文本

UITableView.mTitleRectColor = nil;         -- title区域颜色
UITableView.mTitleFontColor = nil;         -- title字体颜色

UITableView.fontHeight    = nil;   -- 字体高度
UITableView.fontColor     = nil;   -- 字体背景颜色
UITableView.mAlign        =  nil;   -- 对齐方式
UITableView.mCellWidth    =  nil;
UITableView.mSpecalRow   =  nil;
UITableView.mTabWidth = nil;
UITableView.mIsHave = nil;
UITableView.mNumWidth = nil;
UITableView.mMap          = nil;

--[[
功能   ： new UITableView
参数   ： width           --  宽度
      height          --  高度
      rowHeight       --  行高度
      map             --  数据
      cellWidthArry   --  表格宽度数组
返回   ： UITableView 实例
]]

function UITableView:init(width, height, rowHeight, map, cellWidthArry,viewCtrl, id)
  rowHeight  = rowHeight or AW(50);
  self:initView(width, height, viewCtrl, id);
  -- 初始化
  self.mWidth = width ;
  self.mHeight = height ;
  self.mViewCtrl = viewCtrl

  self.mRowHeight = rowHeight;
  self.mPaddWidth = 0;
  self.mLineColor = UIColor.COLOR_GRAY;
  self.mMap =  map;
  self.fontHeight = AW(14);
  self.fontColor = UIColor.COLOR_THEME_GREEN;

  self.mTitleRectColor = UIColor.COLOR_TABLE_HEAD;
  self.mTitleFontColor =UIColor.COLOR_THEME_GREEN;

  self.mAlign = UITableView.ALIGN_CENTER;

  self.listData = {};  --初始化数据列表

  --创建数据 默认创建10条
  for i =1 ,#self.mMap do
    self:GetFactData(i);
  end


  if cellWidthArry then
    self.mCellWidth = cellWidthArry;
  else
    self.mIsHave = true;
  end
  self.sw = width -1;
  self.mSpecalRow = 1;

  return self ;
end


--[[
功能   ： 画控件
参数   ： 无
返回   ： 无
]]
function UITableView:draw()
  local g = self:getGraphic();          -- 获取一个屏幕
  g:clear();                                -- 清屏
  self.rowNum = table.getn(self.mMap[1]); --列数
  local rowWidth = self.sw/self.rowNum;   --平均列宽
  local verNum = table.getn(self.mMap);   --行数
  if self.mIsHave then
    self.mCellWidth = {}
    for k ,v in ipairs(self.mMap[1]) do
      self.mCellWidth[k] = rowWidth;
    end
  end
  
  if self.mList then
    self.mList:delAll();
    self:del(self.mList);
    self.mList = nil ;
    self.myTableView = nil ;
  end
  local lw = 0 ;
  local sw,sh =  self.mViewCtrl.rootView:getWH();
  if self.mWidth > sw then
     lw = sw
  else   
     lw = self.mWidth
  end
  self.mList = MLScrollView.new():initScrollView(lw, self.mHeight , true ,self.mViewCtrl);
  self:add(self.mList, 0, 0);
  
  self.myTableView = UIListView.new():init(self.mWidth, self.mHeight , false, false, false,self.mViewCtrl);
  self.myTableView:setDivider(UIColor.COLOR_GRAY);
  self.myTableView:setDividerHeight(1); 
  self.myTableView.onCellTemplateNum = function (  )
    return 1;   --代表模板数量
  end

  self.myTableView.onCellTemplate = function (  )
    local items = {};
    local x = 0;
    for i = 1 ,self.rowNum  do

      local msgLab = MLListCellText.new():init();
      msgLab.id = i ;
      msgLab.x = x ;
      msgLab.y = 0 ;
      msgLab.width = self.mCellWidth[i]-AW(1) ;
      msgLab.height = self.mRowHeight ;
      msgLab.fontHeight = self.fontHeight ;
      msgLab.fontColor = self.fontColor ;
      msgLab.fontFocusColor = self.fontColor ;
      
      x = x + self.mCellWidth[i]-AW(1)
      table.insert(items,msgLab)

      if i ~= self.rowNum then
        local line = MLListCellImage.new():init();
        line.id = i..i ;
        line.x  = x ;
        line.y  = 0 ;
        line.width  = AW(1);
        line.height  = self.mRowHeight ;
        x = x + AW(1)
        table.insert(items,line)
      end

    end

    -------------------可以设置多个样式---------------------------------------------

    local cell1 = MLListCell.new():init();
    cell1.id = 'a';
    cell1.height = self.mRowHeight ;
    cell1.color   = UIColor.COLOR_WEAKGRAY;
    cell1.focusColor  = UIColor.COLOR_WEAKGRAY;
    cell1.items = items ;

    local cell = {
      items = {
        cell1
      }
    };
    return MLNative.json(cell);

  end

  --数据条数
  self.myTableView.onGetNum = function (  )
    return #self.listData;
  end

  self.myTableView.onCellData = function ( index )
    return self.listData[index + 1];
  end

  --点击事件
  self.myTableView.onCellSel = function ( index, tag )
    index = index + 1;
  end
  self.myTableView.onPullRefresh = function (  )
  end

  --加载更多调用的方法
  self.myTableView.onMoreRefresh = function (  )
  end
  --删除一条数据的方法
  self.myTableView.onDelItem = function ( index )
  end

  self.myTableView:update();
  self.mList:add(self.myTableView, 0, 0);

  return self;
end

--[[
描述 ： 给List创建数据
]]
function UITableView:GetFactData(id)
  local item ={};
  for i = 1 ,table.getn(self.mMap[id])  do
    local msg = MLListCellTextData.new():init();
    msg.text = self.mMap[id][i] ;

    local line  =  MLListCellImageData.new():init();
    line.src = 'system/Lline.png';

    table.insert(item,msg)
    table.insert(item,line)

  end

  local cellData = MLListCellData.new():init();
  cellData.items = item;
  cellData.id =  'a';
  self.listData[#self.listData+1] =  MLNative.json(cellData);

end

--[[
功能   ： 显示控件
参数   ： 无
返回   ： 无
]]
function UITableView:show()
  self:draw();
end

function UITableView:onDestroy(  )
 self.mViewCtrl = nil
 self.listData = nil
 self.mMap =  nil;
 self.mIsHave = nil ;
end
